# -*- coding: utf-8 -*-
"""
Version: 0.1
Author: CarpeDiem
Date: 2022/3/26
Description: 图书借阅系统
"""
'''
图书管理系统
1. 查询图书
2. 增加图书
3. 借阅图书
4. 归还图书
5. 退出系统
# 书： 书名         作者        库存统计        状态        位置
        C          谭浩强          3            未借出     ISO9001
      Python       Guido           2            未借出     NFS8102
       Java        Westos          1            未借出     PKI7844
'''


class Book(object):
    """
    :param name: 书名
    :param author: 作者
    :param number: 库存统计
    :status: 状态
    :param bookindex: 位置
    """
    def __init__(self, name, author, number, bookindex):
        self.name = name
        self.author = author
        self.number = number
        self.bookindex = bookindex

    def __str__(self):
        if self.number >= 1:
            status = '可借'
        elif self.number == 0:
            status = '借出'
        else:
            status = '未知状态'
        return '书名:《%s》 作者: %s 库存统计：%d 状态: <%s> 位置: %s' \
            %(self.name, self.author, self.number, status, self.bookindex)


class BookManger(object):
    def __init__(self):
        self.books = []

    def start(self):
        self.books.append(Book('C', '谭浩强', 3, 'ISO9001'))
        self.books.append(Book('Python', 'Guido', 2, 'NFS8102'))
        self.books.append(Book('Java', 'Westos', 1, 'PKI7844'))

    def menu(self):
        self.start()
        while True:
            print("""
            图书管理系统
            1. 查询图书
            2. 增加图书
            3. 借阅图书
            4. 归还图书
            5. 退出系统
            """)
            choice = input('请输入选择：')
            if choice == '1':
                self.show_all_book()
            elif choice == '2':
                self.add_book()
            elif choice == '3':
                self.borrow_book()
            elif choice == '4':
                self.return_book()
            elif choice == '5':
                print('欢迎下次使用')
                exit()
            else:
                print('请输入正确选择！')
                continue

    def check_book(self, name):
        for book in self.books:
            if book.name == name:
                return book
        else:
            return None

    def show_all_book(self):
        for book in self.books:
            print(book)

    def add_book(self):
        name = input('图书名称：')
        add = self.check_book(name)
        if add == None:
            self.books.append(
                Book(name, input('作者：'), int(input('库存统计：')), input('存储位置：')))
        else:
            add_number = int(input('库存统计：'))
            add.number += add_number
        print('图书《%s》增加成功' % name)

    def borrow_book(self):
        name = input('借阅图书名称：')
        bor = self.check_book(name)
        print(bor)

        if bor != None:
            if bor.number == 0:
                print('书籍《%s》已经借出' % name)
            else:
                bor.number -= 1
                print('书籍《%s》借阅成功' % name)
        else:
            print('书籍《%s》不存在' % name)

    def return_book(self):
        name = input('图书归还名称：')
        ret = self.check_book(name)

        if ret != None:
            if ret.number == 0:
                ret.number += 1
                print('书籍《%s》归还成功' % name)
                print(ret)
            else:
                print('书籍《%s》未借出' % name)
        else:
            print('书籍《%s》不存在' % name)


mange = BookManger()
mange.menu()